package org.budo.mongo.filter;

import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.Spliterator;
import java.util.concurrent.TimeUnit;
import java.util.function.Consumer;

import org.bson.Document;
import org.bson.codecs.configuration.CodecRegistry;
import org.bson.conversions.Bson;

import com.mongodb.AggregationOptions;
import com.mongodb.AggregationOutput;
import com.mongodb.BulkWriteOperation;
import com.mongodb.CommandResult;
import com.mongodb.Cursor;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBDecoderFactory;
import com.mongodb.DBEncoder;
import com.mongodb.DBEncoderFactory;
import com.mongodb.DBObject;
import com.mongodb.GroupCommand;
import com.mongodb.InsertOptions;
import com.mongodb.MapReduceCommand;
import com.mongodb.MapReduceCommand.OutputType;
import com.mongodb.MapReduceOutput;
import com.mongodb.Mongo;
import com.mongodb.MongoClient;
import com.mongodb.MongoClientOptions;
import com.mongodb.MongoNamespace;
import com.mongodb.MongoOptions;
import com.mongodb.ParallelScanOptions;
import com.mongodb.ReadConcern;
import com.mongodb.ReadPreference;
import com.mongodb.ReplicaSetStatus;
import com.mongodb.ServerAddress;
import com.mongodb.WriteConcern;
import com.mongodb.WriteResult;
import com.mongodb.bulk.BulkWriteResult;
import com.mongodb.client.AggregateIterable;
import com.mongodb.client.DistinctIterable;
import com.mongodb.client.FindIterable;
import com.mongodb.client.ListCollectionsIterable;
import com.mongodb.client.ListDatabasesIterable;
import com.mongodb.client.ListIndexesIterable;
import com.mongodb.client.MapReduceIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoIterable;
import com.mongodb.client.model.BulkWriteOptions;
import com.mongodb.client.model.Collation;
import com.mongodb.client.model.CountOptions;
import com.mongodb.client.model.CreateCollectionOptions;
import com.mongodb.client.model.CreateViewOptions;
import com.mongodb.client.model.DBCollectionCountOptions;
import com.mongodb.client.model.DBCollectionDistinctOptions;
import com.mongodb.client.model.DBCollectionFindAndModifyOptions;
import com.mongodb.client.model.DBCollectionFindOptions;
import com.mongodb.client.model.DBCollectionRemoveOptions;
import com.mongodb.client.model.DBCollectionUpdateOptions;
import com.mongodb.client.model.DBCreateViewOptions;
import com.mongodb.client.model.DeleteOptions;
import com.mongodb.client.model.FindOneAndDeleteOptions;
import com.mongodb.client.model.FindOneAndReplaceOptions;
import com.mongodb.client.model.FindOneAndUpdateOptions;
import com.mongodb.client.model.IndexOptions;
import com.mongodb.client.model.InsertManyOptions;
import com.mongodb.client.model.InsertOneOptions;
import com.mongodb.client.model.RenameCollectionOptions;
import com.mongodb.client.model.UpdateOptions;
import com.mongodb.client.result.DeleteResult;
import com.mongodb.client.result.UpdateResult;

@SuppressWarnings({ "rawtypes", "deprecation" })
public class AbstractMongoFilter implements MongoFilter {
    @Override
    public void mongoClient_addOption(MongoFilterChain filterChain, MongoClient mongoClient, int $0) {
        filterChain.mongoClient_addOption(mongoClient, $0);
    }

    @Override
    public void mongoClient_close(MongoFilterChain filterChain, MongoClient mongoClient) {
        filterChain.mongoClient_close(mongoClient);
    }

    @Override
    public void mongoClient_dropDatabase(MongoFilterChain filterChain, MongoClient mongoClient, String $0) {
        filterChain.mongoClient_dropDatabase(mongoClient, $0);
    }

    @Override
    public CommandResult mongoClient_fsync(MongoFilterChain filterChain, MongoClient mongoClient, boolean $0) {
        return filterChain.mongoClient_fsync(mongoClient, $0);
    }

    @Override
    public CommandResult mongoClient_fsyncAndLock(MongoFilterChain filterChain, MongoClient mongoClient) {
        return filterChain.mongoClient_fsyncAndLock(mongoClient);
    }

    @Override
    public ServerAddress mongoClient_getAddress(MongoFilterChain filterChain, MongoClient mongoClient) {
        return filterChain.mongoClient_getAddress(mongoClient);
    }

    @Override
    public List mongoClient_getAllAddress(MongoFilterChain filterChain, MongoClient mongoClient) {
        return filterChain.mongoClient_getAllAddress(mongoClient);
    }

    @Override
    public String mongoClient_getConnectPoint(MongoFilterChain filterChain, MongoClient mongoClient) {
        return filterChain.mongoClient_getConnectPoint(mongoClient);
    }

    @Override
    public List mongoClient_getCredentialsList(MongoFilterChain filterChain, MongoClient mongoClient) {
        return filterChain.mongoClient_getCredentialsList(mongoClient);
    }

    @Override
    public DB mongoClient_getDB(MongoFilterChain filterChain, MongoClient mongoClient, String $0) {
        return filterChain.mongoClient_getDB(mongoClient, $0);
    }

    @Override
    public MongoDatabase mongoClient_getDatabase(MongoFilterChain filterChain, MongoClient mongoClient, String $0) {
        return filterChain.mongoClient_getDatabase(mongoClient, $0);
    }

    @Override
    public List mongoClient_getDatabaseNames(MongoFilterChain filterChain, MongoClient mongoClient) {
        return filterChain.mongoClient_getDatabaseNames(mongoClient);
    }

    @Override
    public int mongoClient_getMaxBsonObjectSize(MongoFilterChain filterChain, MongoClient mongoClient) {
        return filterChain.mongoClient_getMaxBsonObjectSize(mongoClient);
    }

    @Override
    public MongoClientOptions mongoClient_getMongoClientOptions(MongoFilterChain filterChain, MongoClient mongoClient) {
        return filterChain.mongoClient_getMongoClientOptions(mongoClient);
    }

    @Override
    public MongoOptions mongoClient_getMongoOptions(MongoFilterChain filterChain, MongoClient mongoClient) {
        return filterChain.mongoClient_getMongoOptions(mongoClient);
    }

    @Override
    public int mongoClient_getOptions(MongoFilterChain filterChain, MongoClient mongoClient) {
        return filterChain.mongoClient_getOptions(mongoClient);
    }

    @Override
    public ReadConcern mongoClient_getReadConcern(MongoFilterChain filterChain, MongoClient mongoClient) {
        return filterChain.mongoClient_getReadConcern(mongoClient);
    }

    @Override
    public ReadPreference mongoClient_getReadPreference(MongoFilterChain filterChain, MongoClient mongoClient) {
        return filterChain.mongoClient_getReadPreference(mongoClient);
    }

    @Override
    public ReplicaSetStatus mongoClient_getReplicaSetStatus(MongoFilterChain filterChain, MongoClient mongoClient) {
        return filterChain.mongoClient_getReplicaSetStatus(mongoClient);
    }

    @Override
    public List mongoClient_getServerAddressList(MongoFilterChain filterChain, MongoClient mongoClient) {
        return filterChain.mongoClient_getServerAddressList(mongoClient);
    }

    @Override
    public Collection mongoClient_getUsedDatabases(MongoFilterChain filterChain, MongoClient mongoClient) {
        return filterChain.mongoClient_getUsedDatabases(mongoClient);
    }

    @Override
    public WriteConcern mongoClient_getWriteConcern(MongoFilterChain filterChain, MongoClient mongoClient) {
        return filterChain.mongoClient_getWriteConcern(mongoClient);
    }

    @Override
    public boolean mongoClient_isLocked(MongoFilterChain filterChain, MongoClient mongoClient) {
        return filterChain.mongoClient_isLocked(mongoClient);
    }

    @Override
    public MongoIterable mongoClient_listDatabaseNames(MongoFilterChain filterChain, MongoClient mongoClient) {
        return filterChain.mongoClient_listDatabaseNames(mongoClient);
    }

    @Override
    public ListDatabasesIterable mongoClient_listDatabases(MongoFilterChain filterChain, MongoClient mongoClient, Class $0) {
        return filterChain.mongoClient_listDatabases(mongoClient, $0);
    }

    @Override
    public ListDatabasesIterable mongoClient_listDatabases(MongoFilterChain filterChain, MongoClient mongoClient) {
        return filterChain.mongoClient_listDatabases(mongoClient);
    }

    @Override
    public void mongoClient_resetOptions(MongoFilterChain filterChain, MongoClient mongoClient) {
        filterChain.mongoClient_resetOptions(mongoClient);
    }

    @Override
    public void mongoClient_setOptions(MongoFilterChain filterChain, MongoClient mongoClient, int $0) {
        filterChain.mongoClient_setOptions(mongoClient, $0);
    }

    @Override
    public void mongoClient_setReadPreference(MongoFilterChain filterChain, MongoClient mongoClient, ReadPreference $0) {
        filterChain.mongoClient_setReadPreference(mongoClient, $0);
    }

    @Override
    public void mongoClient_setWriteConcern(MongoFilterChain filterChain, MongoClient mongoClient, WriteConcern $0) {
        filterChain.mongoClient_setWriteConcern(mongoClient, $0);
    }

    @Override
    public void mongoClient_slaveOk(MongoFilterChain filterChain, MongoClient mongoClient) {
        filterChain.mongoClient_slaveOk(mongoClient);
    }

    @Override
    public String mongoClient_toString(MongoFilterChain filterChain, MongoClient mongoClient) {
        return filterChain.mongoClient_toString(mongoClient);
    }

    @Override
    public DBObject mongoClient_unlock(MongoFilterChain filterChain, MongoClient mongoClient) {
        return filterChain.mongoClient_unlock(mongoClient);
    }

    @Override
    public void db_addOption(MongoFilterChain filterChain, DB db, int $0) {
        filterChain.db_addOption(db, $0);
    }

    @Override
    public WriteResult db_addUser(MongoFilterChain filterChain, DB db, String $0, char[] $1) {
        return filterChain.db_addUser(db, $0, $1);
    }

    @Override
    public WriteResult db_addUser(MongoFilterChain filterChain, DB db, String $0, char[] $1, boolean $2) {
        return filterChain.db_addUser(db, $0, $1, $2);
    }

    @Override
    public boolean db_collectionExists(MongoFilterChain filterChain, DB db, String $0) {
        return filterChain.db_collectionExists(db, $0);
    }

    @Override
    public CommandResult db_command(MongoFilterChain filterChain, DB db, DBObject $0) {
        return filterChain.db_command(db, $0);
    }

    @Override
    public CommandResult db_command(MongoFilterChain filterChain, DB db, DBObject $0, DBEncoder $1) {
        return filterChain.db_command(db, $0, $1);
    }

    @Override
    public CommandResult db_command(MongoFilterChain filterChain, DB db, DBObject $0, ReadPreference $1) {
        return filterChain.db_command(db, $0, $1);
    }

    @Override
    public CommandResult db_command(MongoFilterChain filterChain, DB db, DBObject $0, ReadPreference $1, DBEncoder $2) {
        return filterChain.db_command(db, $0, $1, $2);
    }

    @Override
    public CommandResult db_command(MongoFilterChain filterChain, DB db, String $0) {
        return filterChain.db_command(db, $0);
    }

    @Override
    public CommandResult db_command(MongoFilterChain filterChain, DB db, String $0, ReadPreference $1) {
        return filterChain.db_command(db, $0, $1);
    }

    @Override
    public DBCollection db_createCollection(MongoFilterChain filterChain, DB db, String $0, DBObject $1) {
        return filterChain.db_createCollection(db, $0, $1);
    }

    @Override
    public DBCollection db_createView(MongoFilterChain filterChain, DB db, String $0, String $1, List $2) {
        return filterChain.db_createView(db, $0, $1, $2);
    }

    @Override
    public DBCollection db_createView(MongoFilterChain filterChain, DB db, String $0, String $1, List $2, DBCreateViewOptions $3) {
        return filterChain.db_createView(db, $0, $1, $2, $3);
    }

    @Override
    public CommandResult db_doEval(MongoFilterChain filterChain, DB db, String $0, Object[] $1) {
        return filterChain.db_doEval(db, $0, $1);
    }

    @Override
    public void db_dropDatabase(MongoFilterChain filterChain, DB db) {
        filterChain.db_dropDatabase(db);
    }

    @Override
    public Object db_eval(MongoFilterChain filterChain, DB db, String $0, Object[] $1) {
        return filterChain.db_eval(db, $0, $1);
    }

    @Override
    public DBCollection db_getCollection(MongoFilterChain filterChain, DB db, String $0) {
        return filterChain.db_getCollection(db, $0);
    }

    @Override
    public DBCollection db_getCollectionFromString(MongoFilterChain filterChain, DB db, String $0) {
        return filterChain.db_getCollectionFromString(db, $0);
    }

    @Override
    public Set db_getCollectionNames(MongoFilterChain filterChain, DB db) {
        return filterChain.db_getCollectionNames(db);
    }

    @Override
    public Mongo db_getMongo(MongoFilterChain filterChain, DB db) {
        return filterChain.db_getMongo(db);
    }

    @Override
    public String db_getName(MongoFilterChain filterChain, DB db) {
        return filterChain.db_getName(db);
    }

    @Override
    public int db_getOptions(MongoFilterChain filterChain, DB db) {
        return filterChain.db_getOptions(db);
    }

    @Override
    public ReadConcern db_getReadConcern(MongoFilterChain filterChain, DB db) {
        return filterChain.db_getReadConcern(db);
    }

    @Override
    public ReadPreference db_getReadPreference(MongoFilterChain filterChain, DB db) {
        return filterChain.db_getReadPreference(db);
    }

    @Override
    public DB db_getSisterDB(MongoFilterChain filterChain, DB db, String $0) {
        return filterChain.db_getSisterDB(db, $0);
    }

    @Override
    public CommandResult db_getStats(MongoFilterChain filterChain, DB db) {
        return filterChain.db_getStats(db);
    }

    @Override
    public WriteConcern db_getWriteConcern(MongoFilterChain filterChain, DB db) {
        return filterChain.db_getWriteConcern(db);
    }

    @Override
    public WriteResult db_removeUser(MongoFilterChain filterChain, DB db, String $0) {
        return filterChain.db_removeUser(db, $0);
    }

    @Override
    public void db_resetOptions(MongoFilterChain filterChain, DB db) {
        filterChain.db_resetOptions(db);
    }

    @Override
    public void db_setOptions(MongoFilterChain filterChain, DB db, int $0) {
        filterChain.db_setOptions(db, $0);
    }

    @Override
    public void db_setReadConcern(MongoFilterChain filterChain, DB db, ReadConcern $0) {
        filterChain.db_setReadConcern(db, $0);
    }

    @Override
    public void db_setReadPreference(MongoFilterChain filterChain, DB db, ReadPreference $0) {
        filterChain.db_setReadPreference(db, $0);
    }

    @Override
    public void db_setWriteConcern(MongoFilterChain filterChain, DB db, WriteConcern $0) {
        filterChain.db_setWriteConcern(db, $0);
    }

    @Override
    public void db_slaveOk(MongoFilterChain filterChain, DB db) {
        filterChain.db_slaveOk(db);
    }

    @Override
    public String db_toString(MongoFilterChain filterChain, DB db) {
        return filterChain.db_toString(db);
    }

    @Override
    public void dbCollection_addOption(MongoFilterChain filterChain, DBCollection dbCollection, int $0) {
        filterChain.dbCollection_addOption(dbCollection, $0);
    }

    @Override
    public AggregationOutput dbCollection_aggregate(MongoFilterChain filterChain, DBCollection dbCollection, DBObject $0, DBObject[] $1) {
        return filterChain.dbCollection_aggregate(dbCollection, $0, $1);
    }

    @Override
    public AggregationOutput dbCollection_aggregate(MongoFilterChain filterChain, DBCollection dbCollection, List $0) {
        return filterChain.dbCollection_aggregate(dbCollection, $0);
    }

    @Override
    public AggregationOutput dbCollection_aggregate(MongoFilterChain filterChain, DBCollection dbCollection, List $0, ReadPreference $1) {
        return filterChain.dbCollection_aggregate(dbCollection, $0, $1);
    }

    @Override
    public Cursor dbCollection_aggregate(MongoFilterChain filterChain, DBCollection dbCollection, List $0, AggregationOptions $1) {
        return filterChain.dbCollection_aggregate(dbCollection, $0, $1);
    }

    @Override
    public Cursor dbCollection_aggregate(MongoFilterChain filterChain, DBCollection dbCollection, List $0, AggregationOptions $1, ReadPreference $2) {
        return filterChain.dbCollection_aggregate(dbCollection, $0, $1, $2);
    }

    @Override
    public long dbCollection_count(MongoFilterChain filterChain, DBCollection dbCollection) {
        return filterChain.dbCollection_count(dbCollection);
    }

    @Override
    public long dbCollection_count(MongoFilterChain filterChain, DBCollection dbCollection, DBObject $0) {
        return filterChain.dbCollection_count(dbCollection, $0);
    }

    @Override
    public long dbCollection_count(MongoFilterChain filterChain, DBCollection dbCollection, DBObject $0, ReadPreference $1) {
        return filterChain.dbCollection_count(dbCollection, $0, $1);
    }

    @Override
    public long dbCollection_count(MongoFilterChain filterChain, DBCollection dbCollection, DBObject $0, DBCollectionCountOptions $1) {
        return filterChain.dbCollection_count(dbCollection, $0, $1);
    }

    @Override
    public void dbCollection_createIndex(MongoFilterChain filterChain, DBCollection dbCollection, DBObject $0) {
        filterChain.dbCollection_createIndex(dbCollection, $0);
    }

    @Override
    public void dbCollection_createIndex(MongoFilterChain filterChain, DBCollection dbCollection, DBObject $0, DBObject $1) {
        filterChain.dbCollection_createIndex(dbCollection, $0, $1);
    }

    @Override
    public void dbCollection_createIndex(MongoFilterChain filterChain, DBCollection dbCollection, DBObject $0, String $1) {
        filterChain.dbCollection_createIndex(dbCollection, $0, $1);
    }

    @Override
    public void dbCollection_createIndex(MongoFilterChain filterChain, DBCollection dbCollection, DBObject $0, String $1, boolean $2) {
        filterChain.dbCollection_createIndex(dbCollection, $0, $1, $2);
    }

    @Override
    public void dbCollection_createIndex(MongoFilterChain filterChain, DBCollection dbCollection, String $0) {
        filterChain.dbCollection_createIndex(dbCollection, $0);
    }

    @Override
    public List dbCollection_distinct(MongoFilterChain filterChain, DBCollection dbCollection, String $0) {
        return filterChain.dbCollection_distinct(dbCollection, $0);
    }

    @Override
    public List dbCollection_distinct(MongoFilterChain filterChain, DBCollection dbCollection, String $0, DBObject $1) {
        return filterChain.dbCollection_distinct(dbCollection, $0, $1);
    }

    @Override
    public List dbCollection_distinct(MongoFilterChain filterChain, DBCollection dbCollection, String $0, DBObject $1, ReadPreference $2) {
        return filterChain.dbCollection_distinct(dbCollection, $0, $1, $2);
    }

    @Override
    public List dbCollection_distinct(MongoFilterChain filterChain, DBCollection dbCollection, String $0, ReadPreference $1) {
        return filterChain.dbCollection_distinct(dbCollection, $0, $1);
    }

    @Override
    public List dbCollection_distinct(MongoFilterChain filterChain, DBCollection dbCollection, String $0, DBCollectionDistinctOptions $1) {
        return filterChain.dbCollection_distinct(dbCollection, $0, $1);
    }

    @Override
    public void dbCollection_drop(MongoFilterChain filterChain, DBCollection dbCollection) {
        filterChain.dbCollection_drop(dbCollection);
    }

    @Override
    public void dbCollection_dropIndex(MongoFilterChain filterChain, DBCollection dbCollection, DBObject $0) {
        filterChain.dbCollection_dropIndex(dbCollection, $0);
    }

    @Override
    public void dbCollection_dropIndex(MongoFilterChain filterChain, DBCollection dbCollection, String $0) {
        filterChain.dbCollection_dropIndex(dbCollection, $0);
    }

    @Override
    public void dbCollection_dropIndexes(MongoFilterChain filterChain, DBCollection dbCollection) {
        filterChain.dbCollection_dropIndexes(dbCollection);
    }

    @Override
    public void dbCollection_dropIndexes(MongoFilterChain filterChain, DBCollection dbCollection, String $0) {
        filterChain.dbCollection_dropIndexes(dbCollection, $0);
    }

    @Override
    public CommandResult dbCollection_explainAggregate(MongoFilterChain filterChain, DBCollection dbCollection, List $0, AggregationOptions $1) {
        return filterChain.dbCollection_explainAggregate(dbCollection, $0, $1);
    }

    @Override
    public DBCursor dbCollection_find(MongoFilterChain filterChain, DBCollection dbCollection) {
        return filterChain.dbCollection_find(dbCollection);
    }

    @Override
    public DBCursor dbCollection_find(MongoFilterChain filterChain, DBCollection dbCollection, DBObject $0) {
        return filterChain.dbCollection_find(dbCollection, $0);
    }

    @Override
    public DBCursor dbCollection_find(MongoFilterChain filterChain, DBCollection dbCollection, DBObject $0, DBObject $1) {
        return filterChain.dbCollection_find(dbCollection, $0, $1);
    }

    @Override
    public DBCursor dbCollection_find(MongoFilterChain filterChain, DBCollection dbCollection, DBObject $0, DBObject $1, int $2, int $3) {
        return filterChain.dbCollection_find(dbCollection, $0, $1, $2, $3);
    }

    @Override
    public DBCursor dbCollection_find(MongoFilterChain filterChain, DBCollection dbCollection, DBObject $0, DBObject $1, int $2, int $3, int $4) {
        return filterChain.dbCollection_find(dbCollection, $0, $1, $2, $3, $4);
    }

    @Override
    public DBCursor dbCollection_find(MongoFilterChain filterChain, DBCollection dbCollection, DBObject $0, DBCollectionFindOptions $1) {
        return filterChain.dbCollection_find(dbCollection, $0, $1);
    }

    @Override
    public DBObject dbCollection_findAndModify(MongoFilterChain filterChain, DBCollection dbCollection, DBObject $0, DBObject $1) {
        return filterChain.dbCollection_findAndModify(dbCollection, $0, $1);
    }

    @Override
    public DBObject dbCollection_findAndModify(MongoFilterChain filterChain, DBCollection dbCollection, DBObject $0, DBObject $1, DBObject $2) {
        return filterChain.dbCollection_findAndModify(dbCollection, $0, $1, $2);
    }

    @Override
    public DBObject dbCollection_findAndModify(MongoFilterChain filterChain, DBCollection dbCollection, DBObject $0, DBObject $1, DBObject $2, boolean $3, DBObject $4, boolean $5, boolean $6) {
        return filterChain.dbCollection_findAndModify(dbCollection, $0, $1, $2, $3, $4, $5, $6);
    }

    @Override
    public DBObject dbCollection_findAndModify(MongoFilterChain filterChain, DBCollection dbCollection, DBObject $0, DBObject $1, DBObject $2, boolean $3, DBObject $4, boolean $5, boolean $6, boolean $7, long $8, TimeUnit $9) {
        return filterChain.dbCollection_findAndModify(dbCollection, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9);
    }

    @Override
    public DBObject dbCollection_findAndModify(MongoFilterChain filterChain, DBCollection dbCollection, DBObject $0, DBObject $1, DBObject $2, boolean $3, DBObject $4, boolean $5, boolean $6, boolean $7, long $8, TimeUnit $9, WriteConcern $10) {
        return filterChain.dbCollection_findAndModify(dbCollection, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9, $10);
    }

    @Override
    public DBObject dbCollection_findAndModify(MongoFilterChain filterChain, DBCollection dbCollection, DBObject $0, DBObject $1, DBObject $2, boolean $3, DBObject $4, boolean $5, boolean $6, WriteConcern $7) {
        return filterChain.dbCollection_findAndModify(dbCollection, $0, $1, $2, $3, $4, $5, $6, $7);
    }

    @Override
    public DBObject dbCollection_findAndModify(MongoFilterChain filterChain, DBCollection dbCollection, DBObject $0, DBObject $1, DBObject $2, boolean $3, DBObject $4, boolean $5, boolean $6, long $7, TimeUnit $8) {
        return filterChain.dbCollection_findAndModify(dbCollection, $0, $1, $2, $3, $4, $5, $6, $7, $8);
    }

    @Override
    public DBObject dbCollection_findAndModify(MongoFilterChain filterChain, DBCollection dbCollection, DBObject $0, DBObject $1, DBObject $2, boolean $3, DBObject $4, boolean $5, boolean $6, long $7, TimeUnit $8, WriteConcern $9) {
        return filterChain.dbCollection_findAndModify(dbCollection, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9);
    }

    @Override
    public DBObject dbCollection_findAndModify(MongoFilterChain filterChain, DBCollection dbCollection, DBObject $0, DBCollectionFindAndModifyOptions $1) {
        return filterChain.dbCollection_findAndModify(dbCollection, $0, $1);
    }

    @Override
    public DBObject dbCollection_findAndRemove(MongoFilterChain filterChain, DBCollection dbCollection, DBObject $0) {
        return filterChain.dbCollection_findAndRemove(dbCollection, $0);
    }

    @Override
    public DBObject dbCollection_findOne(MongoFilterChain filterChain, DBCollection dbCollection) {
        return filterChain.dbCollection_findOne(dbCollection);
    }

    @Override
    public DBObject dbCollection_findOne(MongoFilterChain filterChain, DBCollection dbCollection, DBObject $0) {
        return filterChain.dbCollection_findOne(dbCollection, $0);
    }

    @Override
    public DBObject dbCollection_findOne(MongoFilterChain filterChain, DBCollection dbCollection, DBObject $0, DBObject $1) {
        return filterChain.dbCollection_findOne(dbCollection, $0, $1);
    }

    @Override
    public DBObject dbCollection_findOne(MongoFilterChain filterChain, DBCollection dbCollection, DBObject $0, DBObject $1, DBObject $2) {
        return filterChain.dbCollection_findOne(dbCollection, $0, $1, $2);
    }

    @Override
    public DBObject dbCollection_findOne(MongoFilterChain filterChain, DBCollection dbCollection, DBObject $0, DBObject $1, DBObject $2, ReadPreference $3) {
        return filterChain.dbCollection_findOne(dbCollection, $0, $1, $2, $3);
    }

    @Override
    public DBObject dbCollection_findOne(MongoFilterChain filterChain, DBCollection dbCollection, DBObject $0, DBObject $1, ReadPreference $2) {
        return filterChain.dbCollection_findOne(dbCollection, $0, $1, $2);
    }

    @Override
    public DBObject dbCollection_findOne(MongoFilterChain filterChain, DBCollection dbCollection, DBObject $0, DBCollectionFindOptions $1) {
        return filterChain.dbCollection_findOne(dbCollection, $0, $1);
    }

    @Override
    public DBObject dbCollection_findOne(MongoFilterChain filterChain, DBCollection dbCollection, Object $0) {
        return filterChain.dbCollection_findOne(dbCollection, $0);
    }

    @Override
    public DBObject dbCollection_findOne(MongoFilterChain filterChain, DBCollection dbCollection, Object $0, DBObject $1) {
        return filterChain.dbCollection_findOne(dbCollection, $0, $1);
    }

    @Override
    public DBCollection dbCollection_getCollection(MongoFilterChain filterChain, DBCollection dbCollection, String $0) {
        return filterChain.dbCollection_getCollection(dbCollection, $0);
    }

    @Override
    public long dbCollection_getCount(MongoFilterChain filterChain, DBCollection dbCollection) {
        return filterChain.dbCollection_getCount(dbCollection);
    }

    @Override
    public long dbCollection_getCount(MongoFilterChain filterChain, DBCollection dbCollection, DBObject $0) {
        return filterChain.dbCollection_getCount(dbCollection, $0);
    }

    @Override
    public long dbCollection_getCount(MongoFilterChain filterChain, DBCollection dbCollection, DBObject $0, DBObject $1) {
        return filterChain.dbCollection_getCount(dbCollection, $0, $1);
    }

    @Override
    public long dbCollection_getCount(MongoFilterChain filterChain, DBCollection dbCollection, DBObject $0, DBObject $1, ReadPreference $2) {
        return filterChain.dbCollection_getCount(dbCollection, $0, $1, $2);
    }

    @Override
    public long dbCollection_getCount(MongoFilterChain filterChain, DBCollection dbCollection, DBObject $0, DBObject $1, long $2, long $3) {
        return filterChain.dbCollection_getCount(dbCollection, $0, $1, $2, $3);
    }

    @Override
    public long dbCollection_getCount(MongoFilterChain filterChain, DBCollection dbCollection, DBObject $0, DBObject $1, long $2, long $3, ReadPreference $4) {
        return filterChain.dbCollection_getCount(dbCollection, $0, $1, $2, $3, $4);
    }

    @Override
    public long dbCollection_getCount(MongoFilterChain filterChain, DBCollection dbCollection, DBObject $0, DBCollectionCountOptions $1) {
        return filterChain.dbCollection_getCount(dbCollection, $0, $1);
    }

    @Override
    public long dbCollection_getCount(MongoFilterChain filterChain, DBCollection dbCollection, ReadPreference $0) {
        return filterChain.dbCollection_getCount(dbCollection, $0);
    }

    @Override
    public DB dbCollection_getDB(MongoFilterChain filterChain, DBCollection dbCollection) {
        return filterChain.dbCollection_getDB(dbCollection);
    }

    @Override
    public DBDecoderFactory dbCollection_getDBDecoderFactory(MongoFilterChain filterChain, DBCollection dbCollection) {
        return filterChain.dbCollection_getDBDecoderFactory(dbCollection);
    }

    @Override
    public DBEncoderFactory dbCollection_getDBEncoderFactory(MongoFilterChain filterChain, DBCollection dbCollection) {
        return filterChain.dbCollection_getDBEncoderFactory(dbCollection);
    }

    @Override
    public String dbCollection_getFullName(MongoFilterChain filterChain, DBCollection dbCollection) {
        return filterChain.dbCollection_getFullName(dbCollection);
    }

    @Override
    public List dbCollection_getHintFields(MongoFilterChain filterChain, DBCollection dbCollection) {
        return filterChain.dbCollection_getHintFields(dbCollection);
    }

    @Override
    public List dbCollection_getIndexInfo(MongoFilterChain filterChain, DBCollection dbCollection) {
        return filterChain.dbCollection_getIndexInfo(dbCollection);
    }

    @Override
    public String dbCollection_getName(MongoFilterChain filterChain, DBCollection dbCollection) {
        return filterChain.dbCollection_getName(dbCollection);
    }

    @Override
    public Class dbCollection_getObjectClass(MongoFilterChain filterChain, DBCollection dbCollection) {
        return filterChain.dbCollection_getObjectClass(dbCollection);
    }

    @Override
    public int dbCollection_getOptions(MongoFilterChain filterChain, DBCollection dbCollection) {
        return filterChain.dbCollection_getOptions(dbCollection);
    }

    @Override
    public ReadConcern dbCollection_getReadConcern(MongoFilterChain filterChain, DBCollection dbCollection) {
        return filterChain.dbCollection_getReadConcern(dbCollection);
    }

    @Override
    public ReadPreference dbCollection_getReadPreference(MongoFilterChain filterChain, DBCollection dbCollection) {
        return filterChain.dbCollection_getReadPreference(dbCollection);
    }

    @Override
    public CommandResult dbCollection_getStats(MongoFilterChain filterChain, DBCollection dbCollection) {
        return filterChain.dbCollection_getStats(dbCollection);
    }

    @Override
    public WriteConcern dbCollection_getWriteConcern(MongoFilterChain filterChain, DBCollection dbCollection) {
        return filterChain.dbCollection_getWriteConcern(dbCollection);
    }

    @Override
    public DBObject dbCollection_group(MongoFilterChain filterChain, DBCollection dbCollection, DBObject $0, DBObject $1, DBObject $2, String $3) {
        return filterChain.dbCollection_group(dbCollection, $0, $1, $2, $3);
    }

    @Override
    public DBObject dbCollection_group(MongoFilterChain filterChain, DBCollection dbCollection, DBObject $0, DBObject $1, DBObject $2, String $3, String $4) {
        return filterChain.dbCollection_group(dbCollection, $0, $1, $2, $3, $4);
    }

    @Override
    public DBObject dbCollection_group(MongoFilterChain filterChain, DBCollection dbCollection, DBObject $0, DBObject $1, DBObject $2, String $3, String $4, ReadPreference $5) {
        return filterChain.dbCollection_group(dbCollection, $0, $1, $2, $3, $4, $5);
    }

    @Override
    public DBObject dbCollection_group(MongoFilterChain filterChain, DBCollection dbCollection, GroupCommand $0) {
        return filterChain.dbCollection_group(dbCollection, $0);
    }

    @Override
    public DBObject dbCollection_group(MongoFilterChain filterChain, DBCollection dbCollection, GroupCommand $0, ReadPreference $1) {
        return filterChain.dbCollection_group(dbCollection, $0, $1);
    }

    @Override
    public BulkWriteOperation dbCollection_initializeOrderedBulkOperation(MongoFilterChain filterChain, DBCollection dbCollection) {
        return filterChain.dbCollection_initializeOrderedBulkOperation(dbCollection);
    }

    @Override
    public BulkWriteOperation dbCollection_initializeUnorderedBulkOperation(MongoFilterChain filterChain, DBCollection dbCollection) {
        return filterChain.dbCollection_initializeUnorderedBulkOperation(dbCollection);
    }

    @Override
    public WriteResult dbCollection_insert(MongoFilterChain filterChain, DBCollection dbCollection, DBObject $0, WriteConcern $1) {
        return filterChain.dbCollection_insert(dbCollection, $0, $1);
    }

    @Override
    public WriteResult dbCollection_insert(MongoFilterChain filterChain, DBCollection dbCollection, DBObject[] $0) {
        return filterChain.dbCollection_insert(dbCollection, $0);
    }

    @Override
    public WriteResult dbCollection_insert(MongoFilterChain filterChain, DBCollection dbCollection, DBObject[] $0, WriteConcern $1) {
        return filterChain.dbCollection_insert(dbCollection, $0, $1);
    }

    @Override
    public WriteResult dbCollection_insert(MongoFilterChain filterChain, DBCollection dbCollection, DBObject[] $0, WriteConcern $1, DBEncoder $2) {
        return filterChain.dbCollection_insert(dbCollection, $0, $1, $2);
    }

    @Override
    public WriteResult dbCollection_insert(MongoFilterChain filterChain, DBCollection dbCollection, WriteConcern $0, DBObject[] $1) {
        return filterChain.dbCollection_insert(dbCollection, $0, $1);
    }

    @Override
    public WriteResult dbCollection_insert(MongoFilterChain filterChain, DBCollection dbCollection, List $0) {
        return filterChain.dbCollection_insert(dbCollection, $0);
    }

    @Override
    public WriteResult dbCollection_insert(MongoFilterChain filterChain, DBCollection dbCollection, List $0, InsertOptions $1) {
        return filterChain.dbCollection_insert(dbCollection, $0, $1);
    }

    @Override
    public WriteResult dbCollection_insert(MongoFilterChain filterChain, DBCollection dbCollection, List $0, WriteConcern $1) {
        return filterChain.dbCollection_insert(dbCollection, $0, $1);
    }

    @Override
    public WriteResult dbCollection_insert(MongoFilterChain filterChain, DBCollection dbCollection, List $0, WriteConcern $1, DBEncoder $2) {
        return filterChain.dbCollection_insert(dbCollection, $0, $1, $2);
    }

    @Override
    public boolean dbCollection_isCapped(MongoFilterChain filterChain, DBCollection dbCollection) {
        return filterChain.dbCollection_isCapped(dbCollection);
    }

    @Override
    public MapReduceOutput dbCollection_mapReduce(MongoFilterChain filterChain, DBCollection dbCollection, MapReduceCommand $0) {
        return filterChain.dbCollection_mapReduce(dbCollection, $0);
    }

    @Override
    public MapReduceOutput dbCollection_mapReduce(MongoFilterChain filterChain, DBCollection dbCollection, String $0, String $1, String $2, DBObject $3) {
        return filterChain.dbCollection_mapReduce(dbCollection, $0, $1, $2, $3);
    }

    @Override
    public MapReduceOutput dbCollection_mapReduce(MongoFilterChain filterChain, DBCollection dbCollection, String $0, String $1, String $2, OutputType $3, DBObject $4) {
        return filterChain.dbCollection_mapReduce(dbCollection, $0, $1, $2, $3, $4);
    }

    @Override
    public MapReduceOutput dbCollection_mapReduce(MongoFilterChain filterChain, DBCollection dbCollection, String $0, String $1, String $2, OutputType $3, DBObject $4, ReadPreference $5) {
        return filterChain.dbCollection_mapReduce(dbCollection, $0, $1, $2, $3, $4, $5);
    }

    @Override
    public List dbCollection_parallelScan(MongoFilterChain filterChain, DBCollection dbCollection, ParallelScanOptions $0) {
        return filterChain.dbCollection_parallelScan(dbCollection, $0);
    }

    @Override
    public WriteResult dbCollection_remove(MongoFilterChain filterChain, DBCollection dbCollection, DBObject $0) {
        return filterChain.dbCollection_remove(dbCollection, $0);
    }

    @Override
    public WriteResult dbCollection_remove(MongoFilterChain filterChain, DBCollection dbCollection, DBObject $0, WriteConcern $1) {
        return filterChain.dbCollection_remove(dbCollection, $0, $1);
    }

    @Override
    public WriteResult dbCollection_remove(MongoFilterChain filterChain, DBCollection dbCollection, DBObject $0, WriteConcern $1, DBEncoder $2) {
        return filterChain.dbCollection_remove(dbCollection, $0, $1, $2);
    }

    @Override
    public WriteResult dbCollection_remove(MongoFilterChain filterChain, DBCollection dbCollection, DBObject $0, DBCollectionRemoveOptions $1) {
        return filterChain.dbCollection_remove(dbCollection, $0, $1);
    }

    @Override
    public DBCollection dbCollection_rename(MongoFilterChain filterChain, DBCollection dbCollection, String $0) {
        return filterChain.dbCollection_rename(dbCollection, $0);
    }

    @Override
    public DBCollection dbCollection_rename(MongoFilterChain filterChain, DBCollection dbCollection, String $0, boolean $1) {
        return filterChain.dbCollection_rename(dbCollection, $0, $1);
    }

    @Override
    public void dbCollection_resetOptions(MongoFilterChain filterChain, DBCollection dbCollection) {
        filterChain.dbCollection_resetOptions(dbCollection);
    }

    @Override
    public WriteResult dbCollection_save(MongoFilterChain filterChain, DBCollection dbCollection, DBObject $0) {
        return filterChain.dbCollection_save(dbCollection, $0);
    }

    @Override
    public WriteResult dbCollection_save(MongoFilterChain filterChain, DBCollection dbCollection, DBObject $0, WriteConcern $1) {
        return filterChain.dbCollection_save(dbCollection, $0, $1);
    }

    @Override
    public void dbCollection_setDBDecoderFactory(MongoFilterChain filterChain, DBCollection dbCollection, DBDecoderFactory $0) {
        filterChain.dbCollection_setDBDecoderFactory(dbCollection, $0);
    }

    @Override
    public void dbCollection_setDBEncoderFactory(MongoFilterChain filterChain, DBCollection dbCollection, DBEncoderFactory $0) {
        filterChain.dbCollection_setDBEncoderFactory(dbCollection, $0);
    }

    @Override
    public void dbCollection_setHintFields(MongoFilterChain filterChain, DBCollection dbCollection, List $0) {
        filterChain.dbCollection_setHintFields(dbCollection, $0);
    }

    @Override
    public void dbCollection_setInternalClass(MongoFilterChain filterChain, DBCollection dbCollection, String $0, Class $1) {
        filterChain.dbCollection_setInternalClass(dbCollection, $0, $1);
    }

    @Override
    public void dbCollection_setObjectClass(MongoFilterChain filterChain, DBCollection dbCollection, Class $0) {
        filterChain.dbCollection_setObjectClass(dbCollection, $0);
    }

    @Override
    public void dbCollection_setOptions(MongoFilterChain filterChain, DBCollection dbCollection, int $0) {
        filterChain.dbCollection_setOptions(dbCollection, $0);
    }

    @Override
    public void dbCollection_setReadConcern(MongoFilterChain filterChain, DBCollection dbCollection, ReadConcern $0) {
        filterChain.dbCollection_setReadConcern(dbCollection, $0);
    }

    @Override
    public void dbCollection_setReadPreference(MongoFilterChain filterChain, DBCollection dbCollection, ReadPreference $0) {
        filterChain.dbCollection_setReadPreference(dbCollection, $0);
    }

    @Override
    public void dbCollection_setWriteConcern(MongoFilterChain filterChain, DBCollection dbCollection, WriteConcern $0) {
        filterChain.dbCollection_setWriteConcern(dbCollection, $0);
    }

    @Override
    public void dbCollection_slaveOk(MongoFilterChain filterChain, DBCollection dbCollection) {
        filterChain.dbCollection_slaveOk(dbCollection);
    }

    @Override
    public String dbCollection_toString(MongoFilterChain filterChain, DBCollection dbCollection) {
        return filterChain.dbCollection_toString(dbCollection);
    }

    @Override
    public WriteResult dbCollection_update(MongoFilterChain filterChain, DBCollection dbCollection, DBObject $0, DBObject $1) {
        return filterChain.dbCollection_update(dbCollection, $0, $1);
    }

    @Override
    public WriteResult dbCollection_update(MongoFilterChain filterChain, DBCollection dbCollection, DBObject $0, DBObject $1, boolean $2, boolean $3) {
        return filterChain.dbCollection_update(dbCollection, $0, $1, $2, $3);
    }

    @Override
    public WriteResult dbCollection_update(MongoFilterChain filterChain, DBCollection dbCollection, DBObject $0, DBObject $1, boolean $2, boolean $3, WriteConcern $4) {
        return filterChain.dbCollection_update(dbCollection, $0, $1, $2, $3, $4);
    }

    @Override
    public WriteResult dbCollection_update(MongoFilterChain filterChain, DBCollection dbCollection, DBObject $0, DBObject $1, boolean $2, boolean $3, WriteConcern $4, DBEncoder $5) {
        return filterChain.dbCollection_update(dbCollection, $0, $1, $2, $3, $4, $5);
    }

    @Override
    public WriteResult dbCollection_update(MongoFilterChain filterChain, DBCollection dbCollection, DBObject $0, DBObject $1, boolean $2, boolean $3, WriteConcern $4, Boolean $5, DBEncoder $6) {
        return filterChain.dbCollection_update(dbCollection, $0, $1, $2, $3, $4, $5, $6);
    }

    @Override
    public WriteResult dbCollection_update(MongoFilterChain filterChain, DBCollection dbCollection, DBObject $0, DBObject $1, DBCollectionUpdateOptions $2) {
        return filterChain.dbCollection_update(dbCollection, $0, $1, $2);
    }

    @Override
    public WriteResult dbCollection_updateMulti(MongoFilterChain filterChain, DBCollection dbCollection, DBObject $0, DBObject $1) {
        return filterChain.dbCollection_updateMulti(dbCollection, $0, $1);
    }

    @Override
    public void mongoDatabase_createCollection(MongoFilterChain filterChain, MongoDatabase mongoDatabase, String $0) {
        filterChain.mongoDatabase_createCollection(mongoDatabase, $0);
    }

    @Override
    public void mongoDatabase_createCollection(MongoFilterChain filterChain, MongoDatabase mongoDatabase, String $0, CreateCollectionOptions $1) {
        filterChain.mongoDatabase_createCollection(mongoDatabase, $0, $1);
    }

    @Override
    public void mongoDatabase_createView(MongoFilterChain filterChain, MongoDatabase mongoDatabase, String $0, String $1, List $2) {
        filterChain.mongoDatabase_createView(mongoDatabase, $0, $1, $2);
    }

    @Override
    public void mongoDatabase_createView(MongoFilterChain filterChain, MongoDatabase mongoDatabase, String $0, String $1, List $2, CreateViewOptions $3) {
        filterChain.mongoDatabase_createView(mongoDatabase, $0, $1, $2, $3);
    }

    @Override
    public void mongoDatabase_drop(MongoFilterChain filterChain, MongoDatabase mongoDatabase) {
        filterChain.mongoDatabase_drop(mongoDatabase);
    }

    @Override
    public CodecRegistry mongoDatabase_getCodecRegistry(MongoFilterChain filterChain, MongoDatabase mongoDatabase) {
        return filterChain.mongoDatabase_getCodecRegistry(mongoDatabase);
    }

    @Override
    public MongoCollection mongoDatabase_getCollection(MongoFilterChain filterChain, MongoDatabase mongoDatabase, String $0, Class $1) {
        return filterChain.mongoDatabase_getCollection(mongoDatabase, $0, $1);
    }

    @Override
    public MongoCollection mongoDatabase_getCollection(MongoFilterChain filterChain, MongoDatabase mongoDatabase, String $0) {
        return filterChain.mongoDatabase_getCollection(mongoDatabase, $0);
    }

    @Override
    public String mongoDatabase_getName(MongoFilterChain filterChain, MongoDatabase mongoDatabase) {
        return filterChain.mongoDatabase_getName(mongoDatabase);
    }

    @Override
    public ReadConcern mongoDatabase_getReadConcern(MongoFilterChain filterChain, MongoDatabase mongoDatabase) {
        return filterChain.mongoDatabase_getReadConcern(mongoDatabase);
    }

    @Override
    public ReadPreference mongoDatabase_getReadPreference(MongoFilterChain filterChain, MongoDatabase mongoDatabase) {
        return filterChain.mongoDatabase_getReadPreference(mongoDatabase);
    }

    @Override
    public WriteConcern mongoDatabase_getWriteConcern(MongoFilterChain filterChain, MongoDatabase mongoDatabase) {
        return filterChain.mongoDatabase_getWriteConcern(mongoDatabase);
    }

    @Override
    public MongoIterable mongoDatabase_listCollectionNames(MongoFilterChain filterChain, MongoDatabase mongoDatabase) {
        return filterChain.mongoDatabase_listCollectionNames(mongoDatabase);
    }

    @Override
    public ListCollectionsIterable mongoDatabase_listCollections(MongoFilterChain filterChain, MongoDatabase mongoDatabase, Class $0) {
        return filterChain.mongoDatabase_listCollections(mongoDatabase, $0);
    }

    @Override
    public ListCollectionsIterable mongoDatabase_listCollections(MongoFilterChain filterChain, MongoDatabase mongoDatabase) {
        return filterChain.mongoDatabase_listCollections(mongoDatabase);
    }

    @Override
    public Object mongoDatabase_runCommand(MongoFilterChain filterChain, MongoDatabase mongoDatabase, Bson $0, ReadPreference $1, Class $2) {
        return filterChain.mongoDatabase_runCommand(mongoDatabase, $0, $1, $2);
    }

    @Override
    public Object mongoDatabase_runCommand(MongoFilterChain filterChain, MongoDatabase mongoDatabase, Bson $0, Class $1) {
        return filterChain.mongoDatabase_runCommand(mongoDatabase, $0, $1);
    }

    @Override
    public Document mongoDatabase_runCommand(MongoFilterChain filterChain, MongoDatabase mongoDatabase, Bson $0) {
        return filterChain.mongoDatabase_runCommand(mongoDatabase, $0);
    }

    @Override
    public Document mongoDatabase_runCommand(MongoFilterChain filterChain, MongoDatabase mongoDatabase, Bson $0, ReadPreference $1) {
        return filterChain.mongoDatabase_runCommand(mongoDatabase, $0, $1);
    }

    @Override
    public MongoDatabase mongoDatabase_withCodecRegistry(MongoFilterChain filterChain, MongoDatabase mongoDatabase, CodecRegistry $0) {
        return filterChain.mongoDatabase_withCodecRegistry(mongoDatabase, $0);
    }

    @Override
    public MongoDatabase mongoDatabase_withReadConcern(MongoFilterChain filterChain, MongoDatabase mongoDatabase, ReadConcern $0) {
        return filterChain.mongoDatabase_withReadConcern(mongoDatabase, $0);
    }

    @Override
    public MongoDatabase mongoDatabase_withReadPreference(MongoFilterChain filterChain, MongoDatabase mongoDatabase, ReadPreference $0) {
        return filterChain.mongoDatabase_withReadPreference(mongoDatabase, $0);
    }

    @Override
    public MongoDatabase mongoDatabase_withWriteConcern(MongoFilterChain filterChain, MongoDatabase mongoDatabase, WriteConcern $0) {
        return filterChain.mongoDatabase_withWriteConcern(mongoDatabase, $0);
    }

    @Override
    public DBCursor dbCursor_addOption(MongoFilterChain filterChain, DBCursor dbCursor, int $0) {
        return filterChain.dbCursor_addOption(dbCursor, $0);
    }

    @Override
    public DBCursor dbCursor_addSpecial(MongoFilterChain filterChain, DBCursor dbCursor, String $0, Object $1) {
        return filterChain.dbCursor_addSpecial(dbCursor, $0, $1);
    }

    @Override
    public DBCursor dbCursor_batchSize(MongoFilterChain filterChain, DBCursor dbCursor, int $0) {
        return filterChain.dbCursor_batchSize(dbCursor, $0);
    }

    @Override
    public void dbCursor_close(MongoFilterChain filterChain, DBCursor dbCursor) {
        filterChain.dbCursor_close(dbCursor);
    }

    @Override
    public DBCursor dbCursor_comment(MongoFilterChain filterChain, DBCursor dbCursor, String $0) {
        return filterChain.dbCursor_comment(dbCursor, $0);
    }

    @Override
    public DBCursor dbCursor_copy(MongoFilterChain filterChain, DBCursor dbCursor) {
        return filterChain.dbCursor_copy(dbCursor);
    }

    @Override
    public int dbCursor_count(MongoFilterChain filterChain, DBCursor dbCursor) {
        return filterChain.dbCursor_count(dbCursor);
    }

    @Override
    public DBObject dbCursor_curr(MongoFilterChain filterChain, DBCursor dbCursor) {
        return filterChain.dbCursor_curr(dbCursor);
    }

    @Override
    public DBObject dbCursor_explain(MongoFilterChain filterChain, DBCursor dbCursor) {
        return filterChain.dbCursor_explain(dbCursor);
    }

    @Override
    public void dbCursor_forEach(MongoFilterChain filterChain, DBCursor dbCursor, Consumer $0) {
        filterChain.dbCursor_forEach(dbCursor, $0);
    }

    @Override
    public void dbCursor_forEachRemaining(MongoFilterChain filterChain, DBCursor dbCursor, Consumer $0) {
        filterChain.dbCursor_forEachRemaining(dbCursor, $0);
    }

    @Override
    public int dbCursor_getBatchSize(MongoFilterChain filterChain, DBCursor dbCursor) {
        return filterChain.dbCursor_getBatchSize(dbCursor);
    }

    @Override
    public Collation dbCursor_getCollation(MongoFilterChain filterChain, DBCursor dbCursor) {
        return filterChain.dbCursor_getCollation(dbCursor);
    }

    @Override
    public DBCollection dbCursor_getCollection(MongoFilterChain filterChain, DBCursor dbCursor) {
        return filterChain.dbCursor_getCollection(dbCursor);
    }

    @Override
    public long dbCursor_getCursorId(MongoFilterChain filterChain, DBCursor dbCursor) {
        return filterChain.dbCursor_getCursorId(dbCursor);
    }

    @Override
    public DBDecoderFactory dbCursor_getDecoderFactory(MongoFilterChain filterChain, DBCursor dbCursor) {
        return filterChain.dbCursor_getDecoderFactory(dbCursor);
    }

    @Override
    public DBObject dbCursor_getKeysWanted(MongoFilterChain filterChain, DBCursor dbCursor) {
        return filterChain.dbCursor_getKeysWanted(dbCursor);
    }

    @Override
    public int dbCursor_getLimit(MongoFilterChain filterChain, DBCursor dbCursor) {
        return filterChain.dbCursor_getLimit(dbCursor);
    }

    @Override
    public int dbCursor_getOptions(MongoFilterChain filterChain, DBCursor dbCursor) {
        return filterChain.dbCursor_getOptions(dbCursor);
    }

    @Override
    public DBObject dbCursor_getQuery(MongoFilterChain filterChain, DBCursor dbCursor) {
        return filterChain.dbCursor_getQuery(dbCursor);
    }

    @Override
    public ReadPreference dbCursor_getReadPreference(MongoFilterChain filterChain, DBCursor dbCursor) {
        return filterChain.dbCursor_getReadPreference(dbCursor);
    }

    @Override
    public ServerAddress dbCursor_getServerAddress(MongoFilterChain filterChain, DBCursor dbCursor) {
        return filterChain.dbCursor_getServerAddress(dbCursor);
    }

    @Override
    public boolean dbCursor_hasNext(MongoFilterChain filterChain, DBCursor dbCursor) {
        return filterChain.dbCursor_hasNext(dbCursor);
    }

    @Override
    public DBCursor dbCursor_hint(MongoFilterChain filterChain, DBCursor dbCursor, DBObject $0) {
        return filterChain.dbCursor_hint(dbCursor, $0);
    }

    @Override
    public DBCursor dbCursor_hint(MongoFilterChain filterChain, DBCursor dbCursor, String $0) {
        return filterChain.dbCursor_hint(dbCursor, $0);
    }

    @Override
    public int dbCursor_itcount(MongoFilterChain filterChain, DBCursor dbCursor) {
        return filterChain.dbCursor_itcount(dbCursor);
    }

    @Override
    public Iterator dbCursor_iterator(MongoFilterChain filterChain, DBCursor dbCursor) {
        return filterChain.dbCursor_iterator(dbCursor);
    }

    @Override
    public int dbCursor_length(MongoFilterChain filterChain, DBCursor dbCursor) {
        return filterChain.dbCursor_length(dbCursor);
    }

    @Override
    public DBCursor dbCursor_limit(MongoFilterChain filterChain, DBCursor dbCursor, int $0) {
        return filterChain.dbCursor_limit(dbCursor, $0);
    }

    @Override
    public DBCursor dbCursor_max(MongoFilterChain filterChain, DBCursor dbCursor, DBObject $0) {
        return filterChain.dbCursor_max(dbCursor, $0);
    }

    @Override
    public DBCursor dbCursor_maxScan(MongoFilterChain filterChain, DBCursor dbCursor, int $0) {
        return filterChain.dbCursor_maxScan(dbCursor, $0);
    }

    @Override
    public DBCursor dbCursor_maxTime(MongoFilterChain filterChain, DBCursor dbCursor, long $0, TimeUnit $1) {
        return filterChain.dbCursor_maxTime(dbCursor, $0, $1);
    }

    @Override
    public DBCursor dbCursor_min(MongoFilterChain filterChain, DBCursor dbCursor, DBObject $0) {
        return filterChain.dbCursor_min(dbCursor, $0);
    }

    @Override
    public DBObject dbCursor_next(MongoFilterChain filterChain, DBCursor dbCursor) {
        return filterChain.dbCursor_next(dbCursor);
    }

    @Override
    public int dbCursor_numSeen(MongoFilterChain filterChain, DBCursor dbCursor) {
        return filterChain.dbCursor_numSeen(dbCursor);
    }

    @Override
    public DBObject dbCursor_one(MongoFilterChain filterChain, DBCursor dbCursor) {
        return filterChain.dbCursor_one(dbCursor);
    }

    @Override
    public void dbCursor_remove(MongoFilterChain filterChain, DBCursor dbCursor) {
        filterChain.dbCursor_remove(dbCursor);
    }

    @Override
    public DBCursor dbCursor_resetOptions(MongoFilterChain filterChain, DBCursor dbCursor) {
        return filterChain.dbCursor_resetOptions(dbCursor);
    }

    @Override
    public DBCursor dbCursor_returnKey(MongoFilterChain filterChain, DBCursor dbCursor) {
        return filterChain.dbCursor_returnKey(dbCursor);
    }

    @Override
    public DBCursor dbCursor_setCollation(MongoFilterChain filterChain, DBCursor dbCursor, Collation $0) {
        return filterChain.dbCursor_setCollation(dbCursor, $0);
    }

    @Override
    public DBCursor dbCursor_setDecoderFactory(MongoFilterChain filterChain, DBCursor dbCursor, DBDecoderFactory $0) {
        return filterChain.dbCursor_setDecoderFactory(dbCursor, $0);
    }

    @Override
    public DBCursor dbCursor_setOptions(MongoFilterChain filterChain, DBCursor dbCursor, int $0) {
        return filterChain.dbCursor_setOptions(dbCursor, $0);
    }

    @Override
    public DBCursor dbCursor_setReadPreference(MongoFilterChain filterChain, DBCursor dbCursor, ReadPreference $0) {
        return filterChain.dbCursor_setReadPreference(dbCursor, $0);
    }

    @Override
    public DBCursor dbCursor_showDiskLoc(MongoFilterChain filterChain, DBCursor dbCursor) {
        return filterChain.dbCursor_showDiskLoc(dbCursor);
    }

    @Override
    public int dbCursor_size(MongoFilterChain filterChain, DBCursor dbCursor) {
        return filterChain.dbCursor_size(dbCursor);
    }

    @Override
    public DBCursor dbCursor_skip(MongoFilterChain filterChain, DBCursor dbCursor, int $0) {
        return filterChain.dbCursor_skip(dbCursor, $0);
    }

    @Override
    public DBCursor dbCursor_slaveOk(MongoFilterChain filterChain, DBCursor dbCursor) {
        return filterChain.dbCursor_slaveOk(dbCursor);
    }

    @Override
    public DBCursor dbCursor_snapshot(MongoFilterChain filterChain, DBCursor dbCursor) {
        return filterChain.dbCursor_snapshot(dbCursor);
    }

    @Override
    public DBCursor dbCursor_sort(MongoFilterChain filterChain, DBCursor dbCursor, DBObject $0) {
        return filterChain.dbCursor_sort(dbCursor, $0);
    }

    @Override
    public Spliterator dbCursor_spliterator(MongoFilterChain filterChain, DBCursor dbCursor) {
        return filterChain.dbCursor_spliterator(dbCursor);
    }

    @Override
    public List dbCursor_toArray(MongoFilterChain filterChain, DBCursor dbCursor) {
        return filterChain.dbCursor_toArray(dbCursor);
    }

    @Override
    public List dbCursor_toArray(MongoFilterChain filterChain, DBCursor dbCursor, int $0) {
        return filterChain.dbCursor_toArray(dbCursor, $0);
    }

    @Override
    public String dbCursor_toString(MongoFilterChain filterChain, DBCursor dbCursor) {
        return filterChain.dbCursor_toString(dbCursor);
    }

    @Override
    public DBObject dbCursor_tryNext(MongoFilterChain filterChain, DBCursor dbCursor) {
        return filterChain.dbCursor_tryNext(dbCursor);
    }

    @Override
    public AggregateIterable mongoCollection_aggregate(MongoFilterChain filterChain, MongoCollection mongoCollection, List $0, Class $1) {
        return filterChain.mongoCollection_aggregate(mongoCollection, $0, $1);
    }

    @Override
    public AggregateIterable mongoCollection_aggregate(MongoFilterChain filterChain, MongoCollection mongoCollection, List $0) {
        return filterChain.mongoCollection_aggregate(mongoCollection, $0);
    }

    @Override
    public BulkWriteResult mongoCollection_bulkWrite(MongoFilterChain filterChain, MongoCollection mongoCollection, List $0) {
        return filterChain.mongoCollection_bulkWrite(mongoCollection, $0);
    }

    @Override
    public BulkWriteResult mongoCollection_bulkWrite(MongoFilterChain filterChain, MongoCollection mongoCollection, List $0, BulkWriteOptions $1) {
        return filterChain.mongoCollection_bulkWrite(mongoCollection, $0, $1);
    }

    @Override
    public long mongoCollection_count(MongoFilterChain filterChain, MongoCollection mongoCollection) {
        return filterChain.mongoCollection_count(mongoCollection);
    }

    @Override
    public long mongoCollection_count(MongoFilterChain filterChain, MongoCollection mongoCollection, Bson $0) {
        return filterChain.mongoCollection_count(mongoCollection, $0);
    }

    @Override
    public long mongoCollection_count(MongoFilterChain filterChain, MongoCollection mongoCollection, Bson $0, CountOptions $1) {
        return filterChain.mongoCollection_count(mongoCollection, $0, $1);
    }

    @Override
    public String mongoCollection_createIndex(MongoFilterChain filterChain, MongoCollection mongoCollection, Bson $0) {
        return filterChain.mongoCollection_createIndex(mongoCollection, $0);
    }

    @Override
    public String mongoCollection_createIndex(MongoFilterChain filterChain, MongoCollection mongoCollection, Bson $0, IndexOptions $1) {
        return filterChain.mongoCollection_createIndex(mongoCollection, $0, $1);
    }

    @Override
    public List mongoCollection_createIndexes(MongoFilterChain filterChain, MongoCollection mongoCollection, List $0) {
        return filterChain.mongoCollection_createIndexes(mongoCollection, $0);
    }

    @Override
    public DeleteResult mongoCollection_deleteMany(MongoFilterChain filterChain, MongoCollection mongoCollection, Bson $0) {
        return filterChain.mongoCollection_deleteMany(mongoCollection, $0);
    }

    @Override
    public DeleteResult mongoCollection_deleteMany(MongoFilterChain filterChain, MongoCollection mongoCollection, Bson $0, DeleteOptions $1) {
        return filterChain.mongoCollection_deleteMany(mongoCollection, $0, $1);
    }

    @Override
    public DeleteResult mongoCollection_deleteOne(MongoFilterChain filterChain, MongoCollection mongoCollection, Bson $0) {
        return filterChain.mongoCollection_deleteOne(mongoCollection, $0);
    }

    @Override
    public DeleteResult mongoCollection_deleteOne(MongoFilterChain filterChain, MongoCollection mongoCollection, Bson $0, DeleteOptions $1) {
        return filterChain.mongoCollection_deleteOne(mongoCollection, $0, $1);
    }

    @Override
    public DistinctIterable mongoCollection_distinct(MongoFilterChain filterChain, MongoCollection mongoCollection, String $0, Class $1) {
        return filterChain.mongoCollection_distinct(mongoCollection, $0, $1);
    }

    @Override
    public DistinctIterable mongoCollection_distinct(MongoFilterChain filterChain, MongoCollection mongoCollection, String $0, Bson $1, Class $2) {
        return filterChain.mongoCollection_distinct(mongoCollection, $0, $1, $2);
    }

    @Override
    public void mongoCollection_drop(MongoFilterChain filterChain, MongoCollection mongoCollection) {
        filterChain.mongoCollection_drop(mongoCollection);
    }

    @Override
    public void mongoCollection_dropIndex(MongoFilterChain filterChain, MongoCollection mongoCollection, String $0) {
        filterChain.mongoCollection_dropIndex(mongoCollection, $0);
    }

    @Override
    public void mongoCollection_dropIndex(MongoFilterChain filterChain, MongoCollection mongoCollection, Bson $0) {
        filterChain.mongoCollection_dropIndex(mongoCollection, $0);
    }

    @Override
    public void mongoCollection_dropIndexes(MongoFilterChain filterChain, MongoCollection mongoCollection) {
        filterChain.mongoCollection_dropIndexes(mongoCollection);
    }

    @Override
    public FindIterable mongoCollection_find(MongoFilterChain filterChain, MongoCollection mongoCollection, Class $0) {
        return filterChain.mongoCollection_find(mongoCollection, $0);
    }

    @Override
    public FindIterable mongoCollection_find(MongoFilterChain filterChain, MongoCollection mongoCollection, Bson $0, Class $1) {
        return filterChain.mongoCollection_find(mongoCollection, $0, $1);
    }

    @Override
    public FindIterable mongoCollection_find(MongoFilterChain filterChain, MongoCollection mongoCollection) {
        return filterChain.mongoCollection_find(mongoCollection);
    }

    @Override
    public FindIterable mongoCollection_find(MongoFilterChain filterChain, MongoCollection mongoCollection, Bson $0) {
        return filterChain.mongoCollection_find(mongoCollection, $0);
    }

    @Override
    public Object mongoCollection_findOneAndDelete(MongoFilterChain filterChain, MongoCollection mongoCollection, Bson $0) {
        return filterChain.mongoCollection_findOneAndDelete(mongoCollection, $0);
    }

    @Override
    public Object mongoCollection_findOneAndDelete(MongoFilterChain filterChain, MongoCollection mongoCollection, Bson $0, FindOneAndDeleteOptions $1) {
        return filterChain.mongoCollection_findOneAndDelete(mongoCollection, $0, $1);
    }

    @Override
    public Object mongoCollection_findOneAndReplace(MongoFilterChain filterChain, MongoCollection mongoCollection, Bson $0, Object $1) {
        return filterChain.mongoCollection_findOneAndReplace(mongoCollection, $0, $1);
    }

    @Override
    public Object mongoCollection_findOneAndReplace(MongoFilterChain filterChain, MongoCollection mongoCollection, Bson $0, Object $1, FindOneAndReplaceOptions $2) {
        return filterChain.mongoCollection_findOneAndReplace(mongoCollection, $0, $1, $2);
    }

    @Override
    public Object mongoCollection_findOneAndUpdate(MongoFilterChain filterChain, MongoCollection mongoCollection, Bson $0, Bson $1) {
        return filterChain.mongoCollection_findOneAndUpdate(mongoCollection, $0, $1);
    }

    @Override
    public Object mongoCollection_findOneAndUpdate(MongoFilterChain filterChain, MongoCollection mongoCollection, Bson $0, Bson $1, FindOneAndUpdateOptions $2) {
        return filterChain.mongoCollection_findOneAndUpdate(mongoCollection, $0, $1, $2);
    }

    @Override
    public CodecRegistry mongoCollection_getCodecRegistry(MongoFilterChain filterChain, MongoCollection mongoCollection) {
        return filterChain.mongoCollection_getCodecRegistry(mongoCollection);
    }

    @Override
    public Class mongoCollection_getDocumentClass(MongoFilterChain filterChain, MongoCollection mongoCollection) {
        return filterChain.mongoCollection_getDocumentClass(mongoCollection);
    }

    @Override
    public MongoNamespace mongoCollection_getNamespace(MongoFilterChain filterChain, MongoCollection mongoCollection) {
        return filterChain.mongoCollection_getNamespace(mongoCollection);
    }

    @Override
    public ReadConcern mongoCollection_getReadConcern(MongoFilterChain filterChain, MongoCollection mongoCollection) {
        return filterChain.mongoCollection_getReadConcern(mongoCollection);
    }

    @Override
    public ReadPreference mongoCollection_getReadPreference(MongoFilterChain filterChain, MongoCollection mongoCollection) {
        return filterChain.mongoCollection_getReadPreference(mongoCollection);
    }

    @Override
    public WriteConcern mongoCollection_getWriteConcern(MongoFilterChain filterChain, MongoCollection mongoCollection) {
        return filterChain.mongoCollection_getWriteConcern(mongoCollection);
    }

    @Override
    public void mongoCollection_insertMany(MongoFilterChain filterChain, MongoCollection mongoCollection, List $0) {
        filterChain.mongoCollection_insertMany(mongoCollection, $0);
    }

    @Override
    public void mongoCollection_insertMany(MongoFilterChain filterChain, MongoCollection mongoCollection, List $0, InsertManyOptions $1) {
        filterChain.mongoCollection_insertMany(mongoCollection, $0, $1);
    }

    @Override
    public void mongoCollection_insertOne(MongoFilterChain filterChain, MongoCollection mongoCollection, Object $0) {
        filterChain.mongoCollection_insertOne(mongoCollection, $0);
    }

    @Override
    public void mongoCollection_insertOne(MongoFilterChain filterChain, MongoCollection mongoCollection, Object $0, InsertOneOptions $1) {
        filterChain.mongoCollection_insertOne(mongoCollection, $0, $1);
    }

    @Override
    public ListIndexesIterable mongoCollection_listIndexes(MongoFilterChain filterChain, MongoCollection mongoCollection, Class $0) {
        return filterChain.mongoCollection_listIndexes(mongoCollection, $0);
    }

    @Override
    public ListIndexesIterable mongoCollection_listIndexes(MongoFilterChain filterChain, MongoCollection mongoCollection) {
        return filterChain.mongoCollection_listIndexes(mongoCollection);
    }

    @Override
    public MapReduceIterable mongoCollection_mapReduce(MongoFilterChain filterChain, MongoCollection mongoCollection, String $0, String $1, Class $2) {
        return filterChain.mongoCollection_mapReduce(mongoCollection, $0, $1, $2);
    }

    @Override
    public MapReduceIterable mongoCollection_mapReduce(MongoFilterChain filterChain, MongoCollection mongoCollection, String $0, String $1) {
        return filterChain.mongoCollection_mapReduce(mongoCollection, $0, $1);
    }

    @Override
    public void mongoCollection_renameCollection(MongoFilterChain filterChain, MongoCollection mongoCollection, MongoNamespace $0) {
        filterChain.mongoCollection_renameCollection(mongoCollection, $0);
    }

    @Override
    public void mongoCollection_renameCollection(MongoFilterChain filterChain, MongoCollection mongoCollection, MongoNamespace $0, RenameCollectionOptions $1) {
        filterChain.mongoCollection_renameCollection(mongoCollection, $0, $1);
    }

    @Override
    public UpdateResult mongoCollection_replaceOne(MongoFilterChain filterChain, MongoCollection mongoCollection, Bson $0, Object $1) {
        return filterChain.mongoCollection_replaceOne(mongoCollection, $0, $1);
    }

    @Override
    public UpdateResult mongoCollection_replaceOne(MongoFilterChain filterChain, MongoCollection mongoCollection, Bson $0, Object $1, UpdateOptions $2) {
        return filterChain.mongoCollection_replaceOne(mongoCollection, $0, $1, $2);
    }

    @Override
    public UpdateResult mongoCollection_updateMany(MongoFilterChain filterChain, MongoCollection mongoCollection, Bson $0, Bson $1) {
        return filterChain.mongoCollection_updateMany(mongoCollection, $0, $1);
    }

    @Override
    public UpdateResult mongoCollection_updateMany(MongoFilterChain filterChain, MongoCollection mongoCollection, Bson $0, Bson $1, UpdateOptions $2) {
        return filterChain.mongoCollection_updateMany(mongoCollection, $0, $1, $2);
    }

    @Override
    public UpdateResult mongoCollection_updateOne(MongoFilterChain filterChain, MongoCollection mongoCollection, Bson $0, Bson $1) {
        return filterChain.mongoCollection_updateOne(mongoCollection, $0, $1);
    }

    @Override
    public UpdateResult mongoCollection_updateOne(MongoFilterChain filterChain, MongoCollection mongoCollection, Bson $0, Bson $1, UpdateOptions $2) {
        return filterChain.mongoCollection_updateOne(mongoCollection, $0, $1, $2);
    }

    @Override
    public MongoCollection mongoCollection_withCodecRegistry(MongoFilterChain filterChain, MongoCollection mongoCollection, CodecRegistry $0) {
        return filterChain.mongoCollection_withCodecRegistry(mongoCollection, $0);
    }

    @Override
    public MongoCollection mongoCollection_withDocumentClass(MongoFilterChain filterChain, MongoCollection mongoCollection, Class $0) {
        return filterChain.mongoCollection_withDocumentClass(mongoCollection, $0);
    }

    @Override
    public MongoCollection mongoCollection_withReadConcern(MongoFilterChain filterChain, MongoCollection mongoCollection, ReadConcern $0) {
        return filterChain.mongoCollection_withReadConcern(mongoCollection, $0);
    }

    @Override
    public MongoCollection mongoCollection_withReadPreference(MongoFilterChain filterChain, MongoCollection mongoCollection, ReadPreference $0) {
        return filterChain.mongoCollection_withReadPreference(mongoCollection, $0);
    }

    @Override
    public MongoCollection mongoCollection_withWriteConcern(MongoFilterChain filterChain, MongoCollection mongoCollection, WriteConcern $0) {
        return filterChain.mongoCollection_withWriteConcern(mongoCollection, $0);
    }

}